#!/usr/bin/env node

//命令行
//mv abc def  重命名
//mkdir xyz  移动文件
//mv def xyz

const fs = require('fs');

const src = process.argv[2];
const dest = process.argv[3];

if (!src || !dest) {
    console.error('Usage: node 08-my-mv.js <source> <destination>');
    process.exit(1);
  }
  
// 检查源文件是否存在
if (!fs.existsSync(src)) {
  console.error('Error: Source file does not exist.');
  process.exit(1);
}

// 检查目标路径是否存在，如果存在且是目录，则移动到该目录下
fs.access(dest, fs.constants.F_OK, (err) => {
  if (err) {
      // 目标路径不存在，直接重命名或移动
      fs.rename(src, dest, (err) => {
          if (err) {
              console.error(`Error: Failed to move or rename file - ${err.message}`);
              process.exit(1);
          } else {
              console.log(`File moved/renamed successfully from ${src} to ${dest}`);
          }
      });
  } else {
      // 目标路径存在，检查是否为目录
      if (fs.statSync(dest).isDirectory()) {
          // 目标是目录，构建新的文件路径
          const destPath = path.join(dest, path.basename(src));
          fs.rename(src, destPath, (err) => {
              if (err) {
                  console.error(`Error: Failed to move file into directory - ${err.message}`);
                  process.exit(1);
              } else {
                  console.log(`File moved successfully from ${src} to ${destPath}`);
              }
          });
      } else {
          // 目标路径存在且不是目录，提示错误
          console.error('Error: Destination exists and is not a directory.');
          process.exit(1);
      }
  }
});

//执行./08-my-mv.js  ./xyz/def  ./def
//ll xyz
//rm -rf xyz
//改名mv abc xyz

